package com.atguigu.schedule.pojo;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import lombok.Builder;

import java.time.LocalDateTime;

/**
 * SLAM建图会话实体
 * 记录每次建图会话的详细信息
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class SlamSession {
    
    private Long id;
    
    /**
     * 会话名称
     */
    private String sessionName;
    
    /**
     * 关联的地图ID
     */
    private Long mapId;
    
    /**
     * 会话状态：STARTING, RUNNING, PAUSED, STOPPED, ERROR
     */
    private SessionStatus status;
    
    /**
     * 输入视频源路径
     */
    private String videoSource;
    
    /**
     * 相机参数文件路径
     */
    private String cameraParams;
    
    /**
     * 词汇表文件路径
     */
    private String vocabularyPath;
    
    /**
     * 当前帧数
     */
    private Integer currentFrame;
    
    /**
     * 总帧数
     */
    private Integer totalFrames;
    
    /**
     * 处理进度百分比
     */

    private Double progressPercentage;
    
    /**
     * 实时轨迹数据（JSON格式）
     */
    private String realtimeTrajectory;
    
    /**
     * 错误信息
     */
    private String errorMessage;
    
    /**
     * 创建时间
     */
    private LocalDateTime createdAt;
    
    /**
     * 开始时间
     */
    private LocalDateTime startedAt;
    
    /**
     * 结束时间
     */

    private LocalDateTime endedAt;
    
    /**
     * 会话状态枚举
     */
    public enum SessionStatus {
        STARTING,   // 启动中
        RUNNING,    // 运行中
        PAUSED,     // 暂停
        STOPPED,    // 已停止
        ERROR       // 错误
    }
    protected void onCreate() {
        createdAt = LocalDateTime.now();
    }
}
